package com.garrett.demo.sys.dao;

import com.garrett.demo.sys.entity.Account;
import com.garrett.demo.sys.entity.SimsStudent;
import com.garrett.demo.sys.entity.UserInfo;
import org.apache.logging.log4j.util.Strings;

public class UserDataBaseDemo implements UserDao{

    private static Account[] accounts = new Account[3];
    private static SimsStudent[] students = new SimsStudent[3];

    /**
     * 根据学号获取学生信息
     *
     * @param stuId 学号
     * @return 成功-用户信息 失败-null
     */
    @Override
    public SimsStudent getStudentById(String stuId) {
        if(Strings.isNotBlank(stuId)) {
            for (SimsStudent stu : students) {
                if (stuId.equals(stu.getStudentId())) {
                    return stu;
                }
            }
        }
        return null;
    }

    /**
     * 根据登录账号获取账户资源信息
     *
     * @param account 账户名
     * @return 成功-账户信息 失败-null
     */
    @Override
    public Account getUserByAccount(String account) {
        if(Strings.isNotBlank(account)) {
            for (Account ac : accounts) {
                if (account.equals(ac.getAccount())) {
                    return ac;
                }
            }
        }
        return null;
    }

    /**
     * 注册账户信息
     *
     * @param account 账户
     * @return 1-成功插入一条数据 0-数据创建失败
     */
    @Override
    public int addAccount(Account account) {
        for (int i = 0; i < accounts.length; i++) {
            if(accounts[i] == null){
                accounts[i] = account;
                return 1;
            }
        }
        return 0;
    }

    /**
     * 删除账户
     *
     * @param id 主键id - 不是学号
     * @return 1-成功 0-失败
     */
    @Override
    public int delAccountById(String id) {
        // TODO 实训二作业
        return 0;
    }

    /**
     * 修改账户信息
     *
     * @param account 主键id不可改变，根据主键id判断修改。
     *                <p>例子：{id:23,account:212006677,password:admin}</p>
     *                <p>根据id判断数组中是否存在对应id值，如存在则可以修改学号和密码，否则无效修改</p>
     * @return 1-成功 0-失败
     */
    @Override
    public int modifyAccount(Account account) {
        // TODO 实训二作业

        return 0;
    }

    /**
     * 添加用户信息
     *
     * @param userInfo 用户信息
     * @return 1-成功插入一条数据 0-数据创建失败
     */
    @Override
    public int createUser(SimsStudent userInfo) {
        for (int i = 0; i < students.length; i++) {
            if(students[i] == null){
                students[i] = userInfo;
                return 1;
            }
        }
        return 0;
    }

    /**
     * 删除学生信息
     *
     * @param stuId 学号
     * @return
     */
    @Override
    public int delStudentInfo(String stuId) {
        // TODO 实训二作业

        return 0;
    }

    /**
     * 修改学生信息
     *
     * <p>studentId(学号)不可改变，根据主键studentId判断修改</p>
     * <p>例子：{studentId:212006677,studentName:garrett,email:null}</p>
     * <p>根据studentId判断数组中是否存在对应学号，如存在则可以修改除学号以外的对应属性值，否则无效修改</p>
     *
     * @param student 学生信息
     * @return 1-成功 0-失败
     */
    @Override
    public int modifyStudentInfo(SimsStudent student) {
        // TODO 实训二作业

        return 0;
    }

    /**
     * 获取所有学生信息
     *
     * @return 学生信息列表
     */
    @Override
    public SimsStudent[] getAllStudent() {
        return students;
    }
}
